Identifying Neighbors of Geographically Distributed Assets

ABSTRACT

Processes and systems are presented, for identifying a set of neighbors of a radio transmitter based on available geo-spatial coordinates of radio transmitters in operation around the world. In one aspect, the identified set of radio transmitters can be have a desired size (in terms of number of neighbors and/or radial range). The identified set of radio transmitters can be further customized to include radio transmitters of a specific type, and/or radio transmitters that belong to specific network carriers, and/or other possible grouping criteria.

BACKGROUND

This specification relates to identifying neighbors of geo-spatiallydistributed radio transmitters, for example, cell towers in mobiletelecommunications network.

Carriers that rely on radio-frequency signals to transmit informationoperate networks of radio transmitters. The carriers can identify eachradio transmitter by unique identifiers including the geo-spatialcoordinates (e.g., latitude and longitude) of the radio transmitterlocation. The carriers manage information relating to the radiotransmitters that they operate, and also, the carriers can share/combineinformation relating to their respective radio transmitters with othercarriers to comply with agreements between carriers, or to conform tovarious national and international regulations. Accordingly, aninternational-governed data repository stores information relating tothe geo-spatial (latitude and longitude) coordinates of each radiotransmitter in operation world-wide. Such a record may include, forexample, entries corresponding to over 15 million cell towers operatingaround the globe.

To satisfy increased demand for an ever-growing number of subscriberswho demand and use increasing communication capacity and bandwidth, thecarriers can deploy numerous new radio transmitters. Some of the newlydeployed radio transmitters can be installed in (usually urban) areasthat already have a large spatial density of radio transmitters. Someother of the newly deployed radio transmitters can be installed insub-urban or rural areas that have a sparse density of radiotransmitters, or no radio transmitters at all. While the addition of newradio transmitters is usually prevalent, carriers can also remove radiotransmitters from some locations, either because upgrading an obsoletetransmitter at the respective location is not possible due to space,power and/or regulation limitations, or because extending or renewingcontractual agreements with owners of the respective radio transmitterlocations cannot be achieved. The addition or removal of radiotransmitters anywhere around the world can be reported to theabove-mentioned international-governed data repository. Thus, therecord—containing information relating to the geo-spatial (latitude andlongitude) coordinates of each radio transmitter in operation world-wideand maintained at the international-governed data repository—can beupdated to reflect the addition and/or removal of radio transmitters.

Portions of the foregoing record can be used, for example, to providelocation based services (LBS). If the geo-spatial coordinates of threecell towers are provided to a cell phone, the relative strength of thesignals from the three cell towers detected by the cell phone can beused for triangulating the instant position of the cell phone. Moreover,the cell phone can continue to track its instant location for as long asthe cell phone can detect signals from the three cell towers. MultipleLBS can be provided to a cell phone based on its known geographicallocation, such as promotions, news and emergency notifications.

SUMMARY

This specification describes processes and systems for identifying a setof neighbors of a radio transmitter based on available geo-spatialcoordinates of radio transmitters in operation around the world.

In general, one innovative aspect of the subject matter described inthis specification can be implemented in methods that include theactions of receiving from a central source updates about geographicallydistributed radio transmitters. Responsive to the received updates, anassociated set of neighbors can be generated for each of thegeographically distributed radio transmitters. The associated set ofneighbors of a radio transmitter includes up to a predetermined numberof geographically-closest neighboring radio transmitters of the radiotransmitter. Also, each radio transmitter of the associated set ofneighbors of the radio transmitter is located up to a predeterminedgeographical-distance away from the radio transmitter. Upon request froma mobile device in communication with a given radio transmitter,geo-spatial coordinates for each of a generated set of neighborsassociated with the given radio transmitter can be provided to themobile device to facilitate location-based services (LBS).

Generating the associated set of neighbors for each of thegeographically distributed radio transmitters involves receiving adata-set including geo-spatial coordinates for each of thegeographically distributed radio transmitters. The geographicallydistributed radio transmitters can be grouped in latitude-bins such thateach latitude-bin is centered on an associated latitude, has anidentical latitude-angle range, and overlaps half of a next latitude-binto the North and half of a next latitude-bin to the South. For eachradio transmitter from each latitude-bin, a set of neighbors of a radiotransmitter from a latitude-bin can be generated. The radio transmitteris also from another latitude-bin, and each of the generated set ofneighbors is from among radio transmitters, located in either of thelatitude-bin and the other latitude-bin, that are separated from theradio transmitter by a longitude-distance shorter than the predeterminedgeographical-distance. The longitude-distance between a first and secondradio transmitters is measured, along a line of latitude of thelatitude-bin, between a longitude line of the first radio transmitterand a longitude line of the second radio transmitter.

Generating the set of neighbors of the radio transmitter involvessorting radio transmitters from the latitude-bin by longitude-distanceto the radio transmitter. The set of neighbors of the radio transmittercan be built such that radio transmitters included in the built set ofneighbors are from the sorted latitude bin. Radio transmitters in theother latitude-bin can be sorted by longitude-distance to the radiotransmitter. The built set of neighbors can be updated such that theradio transmitters included in the updated set of neighbors are eitherfrom the sorted latitude-bin or from the other sorted latitude-bin.

Building the set of neighbors of the radio transmitter involvesselecting a next radio transmitter from the sorted latitude-bin.Responsive to a longitude-distance between the radio transmitter and theselected radio transmitter being shorter than a maximum distance betweenthe radio transmitter and anyone of the set of neighbors, a geographicaldistance can be calculated between the selected radio transmitter andthe radio transmitter. Further responsive to the calculated distancebeing shorter that the maximum distance, and responsive to the set ofneighbors having fewer that a predetermined number of radiotransmitters, the selected radio transmitter can be added to the set ofneighbors. Furthermore responsive to the calculated distance being lessthat the maximum distance, and responsive to the set of neighbors havingthe predetermined number of radio transmitters, eliminating from the setof neighbors a radio transmitter corresponding to the maximum distanceprior to adding the selected radio transmitter to the set of neighbors.Additionally, responsive to the longitude-distance between the radiotransmitter and the selected radio transmitter being longer than themaximum distance, providing the set of neighbors for the radiotransmitter. The selected radio transmitter can be tagged, and laterskipped upon identification of the tag.

In another aspect, the described subject matter can also be implementedin a system including a user device and one or more computers operableto interact with the device. The system further includes a set ofgeographically distributed assets of known latitude and longitude, and aspecified geographic location. The one or more computers are furtheroperable to provide to the user device a subset of the set of assets.The subset includes assets located within a predeterminedradial-distance from the specified location. The one or more computersare configured to group assets from the set of geographicallydistributed assets in latitude-bins. Each latitude-bin having a widthequal to twice the predetermined radial-distance, and overlapping halfof a next-to-the-North latitude-bin and half of a next-to-the-Southlatitude-bin. The one or more computers are also configured to sort theassets, in two latitude-bins containing the specified location, bylongitude-distance to the specified location. For each sorted assethaving the longitude-distance to the specified location shorter than thepredetermined radial-distance, the one or more computers can calculate ageographical-distance to the specified location, and can add to thesubset an asset having the calculated geographical-distance to thespecified location shorter than the predetermined radial-distance.

In some implementations, after sorting the assets as described above,for each sorted asset having the longitude-distance to the specifiedlocation shorter than a maximum distance for the subset, the one or morecomputers can calculate a geographical-distance to the specifiedlocation. The maximum distance for the subset is equal to thepredetermined radial-distance, if the predetermined number of assets hasnot been reached. And a geographical-distance corresponding to an assetof the subset that is located farthest from the specified location, ifthe predetermined number of assets has been reached. The one or morecomputers can add to the subset, an asset having the calculatedgeographical-distance shorter than the maximum distance for the subset.Responsive to the predetermined number of assets having been reached,remove from the subset the asset that is located farthest from thespecified location.

The one or more computers can include a server operable to interact withthe device through a data communication network, and the device isoperable to interact with the server as a client. Further, the devicecan be a mobile telephone configured to request from the server thesubset of assets located within a predetermined radial-distance from thespecified location. Furthermore, the one or more computers can be onecomputer, the device is a user interface device, and the one computercontains the user interface device.

Additionally, the set of geographically distributed assets can includeradio transmitters. The radio transmitters include cell towertransmitters. Alternatively, the radio transmitters include one or moreof Wireless Fidelity (WiFi) and Worldwide Interoperability for MicrowaveAccess (WiMAX) transmitters. However, the radio transmitters canincluded both cell tower transmitters and one or more of wifi and WIMAXtransmitters.

In an additional aspect, the described subject matter can also beimplemented in a computer-implemented method for searching waypointsthat includes (a) receiving a set of waypoints, each waypoint havingassociated latitude and longitude values. The received set of waypointscan be (b) ordered along lines of latitude, sorted by longitude values.The lines of latitude can be (c) closed by linking the highest andlowest longitude value waypoints per latitude line. Each one of the setof waypoints can be (d) examined starting at a reference waypoint on aline of latitude and moving away from the reference waypoint throughlongitude values. During the examination, (e) ascending and descendingalong the lines of latitude and calculating a geographical-distancebetween the reference waypoint and an examined neighboring waypoint.Examination can be (f) stopped and a set of neighbors of the referencewaypoint can be provided when a last examined waypoint is closer than anext waypoint in latitude-distance, either ascending or descending, suchthat the set of neighbors comprises the examined waypoints. Steps (d-f)can be (g) repeated for all of the set of waypoints along the lines oflatitude, for all the lines of latitude.

Particular aspects of the subject matter described in this specificationcan be implemented so as to realize one or more of the followingadvantages. The process disclosed in this specification can reduce thecomputational resources needed to determine distances betweengeographically distributed radio transmitters by replacing calculationsperformed in two dimensions (2D) with calculations performed in onedimension (1D). For example, while the 2D distance calculations involvecomputationally intensive multiplications and square root operations,the 1D distance calculations involve computationally less intensiveoperations, such as sorting and grouping of arrays, followed by additionoperations.

Further, the processes disclosed here can speed up generation of anassociated set of neighbors for each of a large number of geographicallydistributed radio transmitters in a scalable manner. For example, if theradio transmitters of interest are part of the worldwide cell phonenetwork, the number of cell towers in operation world wide may exceed 15million. Further, the number of radio transmitters may be in thehundreds of millions for Wireless Fidelity (WiFi) and/or WorldwideInteroperability for Microwave Access (WiMAX) networks. The processesand systems disclosed in this specification can be applied to, and canscale efficiently for, either of the foregoing and/or other radio-basedcommunication networks.

The processes and systems described here can also be implemented as partof a fully customizable solution/service for providing geo-spatialcoordinates of a set of radio transmitters located in a givengeographical area. For example, the provided set of radio transmitterscan be customized to have a desired size (in terms of number ofneighbors and/or radial range). The provided set of radio transmitterscan be further customized to include radio transmitters of a specifictype, and/or radio transmitters that belong to specific networkcarriers, and/or other possible grouping criteria.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example system including a computing device forproviding location-based services to mobile devices in communicationwith the computing device.

FIG. 2A shows a flow chart of an example process for generating anddistributing neighbor information for geo-spatially distributed radiotransmitters.

FIG. 2B shows a flow chart of an example process for generating a set ofneighbors for each of the geo-spatially distributed radio transmitters.

FIGS. 3A-3F are block diagrams showing aspects of an exampleimplementation of a process for generating a set of neighbors for aradio transmitter.

FIG. 4 shows a flow chart of an example process for generating a set ofneighbors for a radio transmitter.

FIGS. 5A-5E show aspects of an example implementation of a process forgenerating neighbor information for given geo-spatially distributedradio transmitters.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Processes and systems are disclosed for generating an associated set ofneighbors for each of geographically distributed radio transmitters.These processes can be implemented at a computing device for generatingsets of neighbors for each of geographically distributed radiotransmitters.

The processes and systems disclosed in this specification can beimplemented as part of internet-based services, also known as cloudservices, such as, for example, the MOBILE ME® service (available fromApple, of Cupertino, Calif.), for facilitating location-based services(LBS).

FIG. 1 shows a block diagram of an example system 100 including acomputing device 10, for providing LBS to a mobile device 40 incommunication with the computing device 10. The mobile device 40 cancommunicate with other mobile devices or with the computing device 10through a radio communication channel via radio transmitters 30-1, . . ., 30-4, . . . of a radio-based communication network. Further, themobile device 40 can communicate with the computing device 10 via acommunication network 50, such as the Internet. Further, the computingdevice 10 can communicate with a data server 20 that stores, among otherthings, geo-spatial information 25 relating to the radio transmitters30-1, . . . , 30-4, . . . of the radio-based communication network. Inthis specification, geo-spatial or geographical information (data)includes at least a latitude and a longitude corresponding to a locationof a radio transmitter. The communication between the computing device10 and the storage server 20 can be carried out via the Internet 50.

In some implementations, the radio-based communication network can be acell phone network. In such implementations, mobile device 40 may be,for example, a smartphone or a cell phone, and the radio transmitters30-1, . . . , 30-4, . . . may be cell towers. The cell towers 30-1, . .. , 30-4, . . . may all belong to a cell network operated by a singlecarrier, or may be part of multiple cell networks operated by severalcarriers. The data server 20 may be operated by a centralized entity(e.g., an organization, a body, an enterprise) and may store a uniquerecord for each of cell towers 30-1, . . . , 30-4, . . . being operatedaround the world. The unique record corresponding to each cell tower mayinclude a set of codes: mobile country code (MCC), mobile network code(MNC), location area code (LAC), and a cell tower ID (CELL). Further,the unique record associated with each cell tower includes a latitudeand a longitude associated with the geographical location of each celltower. The data server 20 stores a record 25 that includes data about 15million cell towers that are operational world-wide.

In other implementations, the radio-based communication network can bebased on WiFi technology. (Wireless Fidelity.) Thus, theradio-transmitters 30-1, . . . , 30-4, . . . may be WiFi transmitters.In yet other implementations, the radio-transmitters 30-1, . . . , 30-4,. . . may be WiMAX transmitters, and the radio-based communicationnetwork can be based on WiMAX technology. (Worldwide Interoperabilityfor Microwave Access.) In WiFi or WiMAX implementations, the data server20 may store a data-set of geographical coordinates for a much largernumber of radio transmitters: Hundreds of millions WiFi and WiMAXtransmitters, compared with 15 million cell towers corresponding to thecell phone network. Further, in some other implementations, the recordsof two or more types of networks from among the cell phone network, WiFinetwork and WiMAX network may be combined in one record, resulting in avery large data-set of geographical coordinates associated withradio-transmitters operating around the world.

In any of the foregoing implementations, the data server 20 can updatethe data-set 25, including geo-spatial coordinates for each radiotransmitter operating around the world, to reflect additions or removalsof radio transmitters anywhere in the world. The data server 20 mayupdate the data-set 25 at regular time intervals (for example, daily,weekly, monthly) or as frequently as necessary (for example, in realtime, upon reporting of an addition/removal of a radio transmitter).Further, the data server 20 may provide the updated record 25 to thecomputing device 10 either at regular time intervals (for example,daily, weekly, monthly) or, in real time, upon completion of an update.The updated record 25 can be pushed by the data server 20 to thecomputing device 10. Alternatively, the updated record 25 can be pulled(requested) by the computing device 10 from the data server 20.

The computing device 10 can receive the updated record 25 includinggeo-spatial coordinates for each radio transmitter in operation aroundthe world. The computing device 10 can generate a set of nearestneighbors associated with each radio transmitter in the updated record25 as disclosed in this specification. A set of neighbors can be definedto have up to a predetermined number of neighboring radio transmitters.For example, a first and a second radio transmitters can be consideredneighbors if a geographical-distance between the first and the secondradio transmitters is smaller than a predetermined distance. Thegeographical-distance, D(1, 2), between the first and the second radiotransmitters can be calculated in terms of the geo-spatial coordinates,(lat1, long1) and (lat2, long2), of the first and the second radiotransmitters, respectively, in accordance with EQs. 1-3:

$\begin{matrix}{{D\left( {1,2} \right)} = \sqrt{{D_{lat}^{2}\left( {1,2} \right)} + {D_{long}^{2}\left( {1,2} \right)}}} & {{EQ}.\mspace{14mu} 1} \\{{D_{lat}\left( {1,2} \right)} = {R_{Earth}{\sin \left\lbrack {\left( {{lat}_{1} - {lat}_{2}} \right)\frac{\pi}{180}} \right\rbrack}}} & {{EQ}.\mspace{14mu} 2} \\{{D_{long}\left( {1,2} \right)} = {R_{Earth}{\sin \left\lbrack {\left( {{long}_{1} - {long}_{2}} \right)\frac{\pi}{180}} \right\rbrack}{\sin \left( {{lat}_{1}\frac{\pi}{180}} \right)}}} & {{EQ}.\mspace{14mu} 3}\end{matrix}$

The parameter “R_Earth” in EQs. 2, 3 represents the Earth radius(R_Earth=6,372,797.9 m). EQ. 2 provides a formula for calculating alatitude-distance between the first and second radio transmitters. Thedistance between two lines of latitude separated by 1° is constant andapproximately equals 110 km. EQ. 3 provides a formula for calculating alongitude-distance between the first and second radio transmitters. Thedistance, dlong, between two lines of longitude separated by 1° dependson latitude. For example, dlong=110 km (approximately) at the Equator,and dlong=0 at the poles. At 47° latitude, dlong=80 km (approximately).

Once the sets of nearest neighbors associated with each radiotransmitter have been generated, the computing device 10 can load thegenerated sets of neighbors in memory. Thus, when a mobile device 40 incommunication with computing device 10 requests a set of neighbors of agiven radio transmitter, the computing device 10 can provide, forexample, the requested set of neighbors and the geo-spatial coordinatesassociated with the requested set of neighbors.

Such a request can be placed when a mobile device 40 attempts todetermine its geographic location (specifically, latitude and longitudeat current location of the mobile device). For example, a user may turnon a smartphone 40 to look up diners in its geographical vicinity. Thesmartphone 40 may detect signals from four nearby cell towers 30-1,30-2, 30-3 and 30-4. The detected signals enable the smartphone 40 toidentify the four cell towers 30-1, 30-2, 30-3 and 30-4 and to rank thestrength of the detected signals. The ranking of the detected signalstrengths enable the smartphone 40 to estimate a relative proximity ofthe smartphone 40 to the identified cell towers. In this example, thesmartphone is closest to cell tower 30-1. The smartphone 40 can connectto the cloud service 10 and can request, in some implementations, a listincluding a set of neighbors of cell tower 30-1 and the geo-spatialcoordinates of each of the set of neighbors. In other implementations,the smartphone 40 may also request the geo-spatial coordinates of theother detected cell towers, 30-2, 30-3 and 30-4 (and even theirrespective set of neighbors).

Once the above information is provided to the smartphone 40 by the cloudservice 10, the smartphone 40 may uniquely determine its currentgeographic location based on triangulating the detected signals from,and using the received geographical coordinates (latitude and longitude)of, cell tower 30-1 and two of its closest neighbors, e.g., 30-2 and30-3. Upon determining its instant geographical location, the user ofthe smartphone 40 may accurately lookup diners that are closest to thesmartphone's current location.

Additionally, the user of the smartphone 40 can travel over thepredetermined distance (covered by the received set of neighbors) andcontinue to update the smartphone's instant location via thetriangulation technique described above, based on the instant threeclosest cell towers, for as long as the instant three closest celltowers are included in the received set of neighbors. When that is nolonger the case, the smartphone 40 can reconnect to the cloud service 10and may request a set of neighbors of an instant closest cell tower. Asrequests for data transfer can be expensive in terms of powerconsumption, it can be a great benefit for the smartphone 40 to continuedetermining its geographical location, while traveling over thepredetermined distance, without having to request further updates fromthe cloud service 10.

An example of a process 200A for generating and distributing neighborinformation for geo-spatially distributed radio transmitters is shown inFIG. 2. Process 200A can be implemented at a cloud service, for example,similar to cloud service 10 discussed in reference to FIG. 1. Further,process 200A can be performed by a computing device, for example,similar to computing device 10 discussed in reference to FIG. 1.

In some implementations, process 200A can start by receiving 205, by acomputing device from a storage server, updates about geographicallydistributed radio transmitters. The received updates can represent afull record of all radio transmitters that operate around the world. Thefull record may include most recently added radio transmitters. The fullrecord may further reflect absence of most recently removed radiotransmitters. Alternatively, the received updated record may onlyinclude an indication of the most recently added and removed radiotransmitters, i.e., the received record can be a delta-record.

After receiving the updates, process 200A can continue by generating 220an associated set of neighbors for each of the geographicallydistributed radio transmitters. The associated set of neighbors of aradio transmitter can include up to a predetermined number ofgeographically closest neighboring radio transmitters of the radiotransmitter. For example, the predetermined number of neighbors can be20. Further, each radio transmitter of the associated set of neighborsof the radio transmitter is located up to a predeterminedgeographical-distance away from the radio transmitter. For example, thepredetermined geographical-distance may be 50 km. In another example,the predetermined geographical-distance may be 35 km. Furthermore, thegenerated sets of neighbors corresponding to the geographicallydistributed radio transmitters can be stored in memory of the computingdevice of the cloud service.

Upon request from a mobile device in communication with a given radiotransmitter, the process 200A can continue by providing 240, by thecomputing device to the mobile device, geo-spatial coordinates for eachof a generated set of neighbors associated with the given radiotransmitter. The foregoing information may be provided to facilitatelocation-based services (LBS). An example of such LBS carried out bycloud service 10 for the benefit of smartphone 40 was discussed above inreference to FIG. 1.

FIG. 2B shows a flow chart of an example process 200B for generating aset of neighbors for each of the geo-spatially distributed radiotransmitters. The process 200B can be implemented, for example, toaccomplish the generating 220 of an associated set of neighbors for eachof the geographically distributed radio transmitters, as part of process200A described above in reference to FIG. 2A.

In some implementations, process 200B can start by receiving 210 adata-set including geo-spatial coordinates for each of thegeographically distributed radio transmitters. The received data-set canbe the updated record described above in reference to FIG. 2A.

Process 200B can continue by grouping 222 the geographically distributedradio transmitters in latitude-bins. Each latitude-bin can beconstructed to be centered on an associated latitude. For example, thelatitude-bin 47° represents a ribbon (strip) that circles the Earth andis centered on parallel (latitude line) 47°. Each latitude-bin has anidentical latitude-range corresponding to twice the predeterminedgeographical-distance. For example, if the predetermined distance ischosen to be 50 km, then the corresponding latitude-range is 1°,corresponding to 100 km (or twice the predetermined distance of 50 km).Thus, for the above example, the latitude-bin 47° represents a ribbon(strip) that circles the Earth while being centered on parallel(latitude line) 47° and having a width of 100 km. Further, a nextlatitude-bin is shifted North-bound from the current latitude-bin byhalf the latitude-range, corresponding to a distance-shift equal to thepredetermined geographical-distance. Similarly, another nextlatitude-bin is shifted South-bound from the current latitude-bin byhalf the latitude-range, corresponding to a distance-shift equal to thepredetermined geographical-distance. For latitude-bin 47° that iscentered on parallel (latitude line) 47° and that has a latitude-range(latitude-angle) of 1° (corresponding to twice the predetermineddistance of 50 km), the next latitude-bin to the North is centered onparallel (latitude line) 47.5°. And, the next latitude-bin to the Southis centered on parallel (latitude line) 46.5°. By incrementing thelatitude-bins in the manner described above, each latitude-bin overlapshalf of a next latitude-bin to the North and half of a next latitude-binto the South.

Process 200B can include two process loops. An outer loop cycles 224through each latitude-bin. An inner loop cycles 226 through each radiotransmitter included in a latitude-bin.

Process 200B can continue by generating 230 a set of neighbors of aradio transmitter from the latitude-bin. Based on the description aboveof latitude-bins, the radio transmitter included in a latitude-bin isalso included in another latitude-bin. For example, if the radiotransmitter is located in the Northern-half of latitude-bin 47°, thenthe radio transmitter is also located in (the Southern-half of)latitude-bin 47.5°. However, if the radio transmitter is located in theSouthern-half of latitude-bin 47°, then the radio transmitter is alsolocated in (the Northern-half of) latitude-bin 46.5°.

Further, to speed up generating 230 the set of neighbors of the radiotransmitter, only the ones from among radio transmitters, located ineither of the latitude-bin and the other latitude-bin, that areseparated from the radio transmitter by a longitude-distance shorterthan the predetermined geographical-distance may be examined todetermine whether to be included in the generated set of neighbors. Thelongitude-distance between a first and second radio transmitters isequal to a distance measured along a line of latitude of thelatitude-bin between a meridian (longitude line) of the first radiotransmitter and a meridian (longitude line) of the second radiotransmitter, in accordance with EQ. 3. For example, if the first andsecond radio transmitters are included in latitude-bin 47°, alongitude-distance, D(1, 2), corresponding to a predeterminedgeographical-distance of 50 km corresponds to a longitude-range of 0.7°.Therefore, if the first radio transmitter has a longitude of 5.9°, andthe second radio transmitter has a longitude of 6.4°, the secondtransmitter may be considered for inclusion in the generated set ofneighbors of the first radio transmitter, as the longitude-distancebetween the second and first radio transmitters is shorter then thepredetermined geographical-distance of 50 km. However, if the longitudeof the first radio transmitter is 5.9°, and the longitude of the secondradio transmitter is 6.9°, the second transmitter may not be consideredfor inclusion in the set generated set of neighbors of the first radiotransmitter, as the longitude-distance between the second and firstradio transmitters is longer then the predeterminedgeographical-distance of 50 km.

Examining the ones from among radio transmitters, located in either ofthe latitude-bin and the other latitude-bin, that are separated from theradio transmitter by a longitude-distance shorter than the predeterminedgeographical-distance can involve calculating a geographic-distance fromthe examined radio-transmitter to the radio transmitter. The examinedones having a calculated geographic-distance shorter than thepredetermined geographic-distance can be included in the set ofneighbors of the radio transmitter.

Process 200B may include, as part of generating 230 the set of neighborsof the radio transmitter, an intermediate step of sorting the radiotransmitters from the latitude-bin by longitude-distance to the radiotransmitter. Sorting by longitude-distance can be performed in twosteps. A step involves sorting the radio transmitters in thelatitude-bin by longitude. Another step involves subtracting thelongitude of the radio transmitter from the longitude of each radiotransmitter in the latitude-bin. The sorting and the subtracting can beperformed in either order. Then, as disclosed above, generating 230 theset of neighbors of the radio transmitter may proceed by examining theones from among the radio transmitters included in the sorted latitudebin that are separated from the radio transmitter by alongitude-distance shorter than the predetermined geographical-distance.

Process 200B may include, as part of generating 230 the set of neighborsof the radio transmitter, another intermediate step of sorting the radiotransmitters from the other latitude-bin that includes the radiotransmitter. The sorting of the other latitude-bin is performed(similarly as the sorting of the latitude-bin) by longitude-distance tothe radio transmitter. Then, as disclosed above, updating the generatedset of neighbors of the radio transmitter may proceed by examining theones from among the radio transmitters included in the sorted otherlatitude bin that are separated from the radio transmitter by alongitude-distance shorter than the predetermined geographical-distance.

FIGS. 3A-3F are block diagrams showing aspects of an exampleimplementation of a process for generating a set of neighbors of a radiotransmitter. The process implemented in FIGS. 3A-3F may be based on acombination of processes 200A and 200B described above, in reference toFIGS. 2A and 2B.

FIG. 3A shows an image 300A of a map of Neuchatel, Switzerland.Parallels (latitude lines) of 46.5°, 47°, 47.5° and 48° (N) arerepresented on the map. Meridians (longitude lines) of 4.9°, 5.6°, 6.3°and 7° (E) are also represented on the map. Parallels that are 0.5°apart are separated by a geographical-distance of 50 km. For example, ageographical-distance of 50 km can be measured along meridian 4.9° fromparallel 47° to parallel 47.5°. Further, at Neuchatel's latitude,meridians that are 0.7° apart are separated by a geographical-distanceof 50 km. For example, a geographical-distance of 50 km can be measuredalong parallel 47° from meridian 4.9° to meridian 5.6°.

Detailed features of the map have been excluded except forrepresentations (circles) of sixty radio transmitters in and around thevicinity of Neuchatel. A tourist may turn on her smartphone 40 and maydetect signals from radio transmitters 30-1 (filled circle), 30-2 and30-3. The signal detected from radio transmitter 30-1 is the strongest,thus indicating that radio transmitter 30-1 is the closest radiotransmitter to smartphone 40. A request to a cloud service placed bysmartphone 40, as described for example in FIG. 1, can result in thesmartphone 40 receiving geo-spatial coordinates for each of a set ofneighbors associated with the radio transmitter 30-1.

FIGS. 3B-3F illustrate aspects of an example process, performed by acomputing device of the cloud service, for generating the set ofneighbors associated with the radio transmitter 30-1. The generated setof neighbors of radio transmitter 30-1 can contain up to, for example,twenty radio transmitters. Each radio transmitter included in thegenerated set of neighbors is separated from radio transmitter 30-1 by ageographical-distance shorter than 50 km.

FIG. 3B shows an image 300B of the map of Neuchatel. A portion 320 of alatitude-bin 310 centered on parallel 47° is overlaid on the map image300B. The radio transmitter 30-1 is included in latitude-bin 310. Theportion 320 of the latitude-bin 310 shown on the image 300B (in dashedline) is limited to the West by meridian 4.9° and to the East bymeridian 7°. However, the latitude-bin 310 extends, beyond the Westernand Eastern boundaries of the portion 320, around the Earth, to close onitself in ribbon (strip)-fashion, as described above. The radiotransmitters included in latitude-bin 310 can be sorted in order ofincreasing longitude-distance from radio transmitter 30-1. In thisimplementation, the sorting is performed by tying the radio transmitterstogether, in a manner similar to adding pearls on a string, to constructan East-bound string 302, and a West-bound string 304. The strings 302and 304 may extend beyond the Eastern and Western boundaries,respectively, of portion 320 of latitude-bin 310.

FIG. 3C shows an image 300C of the map of Neuchatel, including theportion 320 of latitude-bin 310 containing radio transmitters fromlatitude-bin 310 ordered along East-bound string 302, and West-boundstring 304, in order of increasing longitude-distance from radiotransmitter 30-1. Also overlaid on the map image 300C are longitude line311 of the radio transmitter, and longitude lines 312 and 313(represented by dotted lines). The longitude lines 312 and 313 areseparated from longitude line 311 by a longitude-range corresponding tothe predetermined geographical-distance. In the example implementationshown in FIG. 3C, longitude lines 312 and 313 are separated fromlongitude line 311 by a longitude-range of 0.7°, corresponding to thepredetermined geographical-distance of 50 km. Additionally, thedotted-lined circle 315 overlaid on the map image 300C encompasses anarea centered on the radio transmitter 30-1 and having a radius equal tothe predetermined geographical-distance (of 50 km, in this example).

Each radio transmitter on string 302 located to the West of longitudeline 312 can be examined to determine whether to be included in thegenerated set of neighbors. Also, each radio transmitter on string 304located to the East of longitude line 313 can be examined to determinewhether to be included in the generated set of neighbors.

Consider, for example, radio transmitter 30-i on string 302. Radiotransmitter 30-i on string 302 is located to the West of longitude line312. Once the computing device can establish that radio transmitter 30-iis to be examined based on the foregoing criterion, the computing devicecan calculate the geographical-distance, D(1, i), between radiotransmitter 30-1 and radio transmitter 30-i in accordance to EQs. 1-3.As shown in FIG. 3C, radio transmitter 30-i is located inside circle 315(the 50 km-circle, in this example), thus, the computing device candetermine that radio transmitter 30-i may be added to the set ofneighbors of radio transmitter 30-1. If the set of neighbors beinggenerated has fewer than the predetermined number of neighbors (20, forthis example), radio transmitter 30-i is added to the set of neighbors.If, however, the set of neighbors being generated has already reachedthe predetermined number of neighbors (20, for this example), then thecomputing device compares the calculated geographical-distance, D(1, i),with the maximum geographical-distance for the set of neighbors. If thecalculated geographical-distance, D(1, i), is longer than the maximumgeographical-distance for the set of neighbors, then the radiotransmitter 30-i cannot be added to the set of neighbors. Alternatively,if the calculated geographical-distance, D(1, i), is shorter than themaximum geographical-distance for the set of neighbors, then the radiotransmitter corresponding to the maximum geographical-distance iseliminated from the set of neighbors, and the radio transmitter 30-i isbe added to the set of neighbors.

Consider next, for example, radio transmitter 30-j located Eastward fromradio transmitter 30-i on string 302. Radio transmitter 30-j on string302 is located to the West of longitude line 312. Once the computingdevice can establish that radio transmitter 30-j is to be examined basedon the foregoing criterion, the computing device can calculate thegeographical distance, D(1, j), between radio transmitter 30-1 and radiotransmitter 30-j in accordance to EQs. 1-3. As shown in FIG. 3C, radiotransmitter 30-j is located outside circle 315, thus, the computingdevice can determine that radio transmitter 30-i may not be added to theset of neighbors of radio transmitter 30-1. The computing devicecontinues next to examine the radio transmitter 30-k located Eastwardfrom radio transmitter 30-j on string 302, and so on.

Once the set of neighbors being generated reaches the predeterminednumber (20 in this example), a subsequent radio transmitter on either ofstrings 302 and 304 may be examined if the subsequent radio transmitteris separated from the radio transmitter 30-1 by a longitude-distanceshorter than the maximum geographical-distance for the current set ofneighbors. Prior to the set of neighbors being generated having reachedthe predetermined number (20, in this example), the longitude-distanceof a subsequent radio tower is compared with the predeterminedgeographical-distance (50 km, in this example) to determine whether toexamine the subsequent radio tower. The dashed-line circle 318 overlaidon the map image 300C encompasses an area centered on the radiotransmitter 30-1 and having a radius equal to the maximumgeographical-distance for the set of 20 neighbors of radio transmitter30-1.

Each and every radio transmitter examined during the processing oflatitude-bin 310 can be tagged (marked) accordingly, whether or not therespective radio transmitter has been included in the set of neighborsof radio transmitter 30-1. Such tagging, that marks a radio transmitteras having been examined, can prevent double processing of the radiotransmitter during the processing of the other latitude-bin 330 thatincludes the radio transmitter 30-1.

FIG. 3D shows an image 300D of the map of Neuchatel. A portion 340 of alatitude-bin 330 centered on parallel 47.5° is overlaid on the map image300D. The radio transmitter 30-1 is included in latitude-bin 330. Theportion 340 of the latitude-bin 330 shown on the image 300D (in dashedline) is limited to the West by meridian 4.9° and to the East bymeridian 7°. However, the latitude-bin 330 extends, beyond the Westernand Eastern boundaries of the portion 340, around the Earth, to close onitself in ribbon (strip)-fashion, as described above. The radiotransmitters included in latitude-bin 330 can be sorted in order ofincreasing longitude-distance from radio transmitter 30-1. In thisimplementation, the sorting is performed by tying the radio transmitterstogether, in a manner similar to adding pearls on a string, to constructan East-bound string 306, and a West-bound string 308. The strings 306and 308 may extend beyond the Eastern and Western boundaries,respectively, of portion 340 of latitude-bin 330.

FIG. 3E shows an image 300E of the map of Neuchatel, including theportion 340 of latitude-bin 330 containing radio transmitters fromlatitude-bin 330 ordered along East-bound string 306, and West-boundstring 308, in order of increasing longitude-distance from radiotransmitter 30-1. Also overlaid on the map image 300E are longitude line311 of the radio transmitter, and longitude lines 312 and 313(represented by dotted lines). The longitude lines 312 and 313 areseparated from longitude line 311 by a longitude-range corresponding tothe predetermined geographical-distance. In the example implementationshown in FIG. 3E, longitude lines 312 and 313 are separated fromlongitude line 311 by a longitude-range of 0.7°, corresponding to thepredetermined geographical-distance of 50 km. Additionally, thedotted-lined circle 315 overlaid on the map image 300E encompasses anarea centered on the radio transmitter 30-1 and having a radius equal tothe predetermined geographical-distance (of 50 km, in this example).

However, the radio transmitters located in the Southern-half oflatitude-bin 330 have been examined during the processing oflatitude-bin 310 and have been tagged accordingly. By avoiding toreprocess (skipping examination of) the tagged radio transmitters inlatitude-bin 330, the processing of strings 306 and 308 can be sped upsignificantly. Therefore, the radio towers to be examined during theprocessing of the other latitude-bin 330 can be chosen from amonguntagged radio transmitters of strings 306 and 308.

Prior to the set of neighbors being generated having reached thepredetermined number (20, in this example), each untagged radiotransmitter on string 306 located to the West of longitude line 312 canbe examined to determine whether to be included in the generated set ofneighbors. Also, each untagged radio transmitter on string 308 locatedto the East of longitude line 313 can be examined to determine whetherto be included in the generated set of neighbors. Once the set ofneighbors being generated reaches the predetermined number (20 in thisexample), a subsequent untagged radio transmitter on either of strings306 and 308 may be examined if the subsequent untagged radio transmitteris separated from the radio transmitter 30-1 by a longitude-distanceshorter than the maximum geographical-distance for the current set ofneighbors.

Consider, for example, a next radio transmitter on of strings 306 and308. Once the computing device can establish that the next radiotransmitter is to be examined based on the foregoing criteria, thecomputing device can calculate the geographical-distance between thenext radio transmitter and radio transmitter 30-1 in accordance to EQs.1-3. For example, the next radio transmitter can be located insidecircle 315 (the 50 km-circle, in this example), thus, the computingdevice can determine that the next radio transmitter may be added to theset of neighbors of radio transmitter 30-1. If the set of neighborsbeing generated has fewer than the predetermined number of neighbors(20, for this example), the next radio transmitter is added to the setof neighbors. If, however, the set of neighbors being generated hasalready reached the predetermined number of neighbors (20, for thisexample), then the computing device compares the calculatedgeographical-distance with the maximum geographical-distance for the setof neighbors. If the calculated geographical-distance is longer than themaximum geographical-distance for the set of neighbors, then the nextradio transmitter cannot be added to the set of neighbors.Alternatively, if the calculated geographical-distance is shorter thanthe maximum geographical-distance for the set of neighbors, then theradio transmitter corresponding to the maximum distance is eliminatedfrom the set of neighbors, and the next radio transmitter is added tothe set of neighbors.

The computing device may continue to examine another untagged radiotransmitter located Eastward from the next radio transmitter on string306 or located Westward from the next radio transmitter on string 308,and so on. The dashed-line circle 338 overlaid on the map image 300Eencompasses an area centered on the radio transmitter 30-1 and having aradius equal to the maximum geographical-distance for the set of 20neighbors of radio transmitter 30-1. Note that some of the towersincluded in the generated set of neighbors of radio transmitter 30-1 arelocated only in latitude-bin 330 (to the North of parallel 47.5°). Someother of the towers included in the generated set of neighbors of radiotransmitter 30-1 are located only in latitude-bin 310 (to the South ofparallel 47°). And the remaining towers included in the generated set ofneighbors of radio transmitter 30-1 are located in the overlapping areasof latitude-bins 310 and 330 (between parallels 47° and 47.5°).

Finally, FIG. 3F shows an image 300F of the map of Neuchatel. Thedotted-lined circle 315 overlaid on the map image 300F encompasses anarea centered on the radio transmitter 30-1 and having a radius equal tothe predetermined geographical-distance (of 50 km, in this example).Additionally, the dashed-line circle 338 overlaid on the map image 300Fencompasses an area centered on the radio transmitter 30-1 and having aradius equal to the maximum geographical-distance for the generated setof 20 neighbors of radio transmitter 30-1. In this example, the maximumgeographical-distance for the set of 20 neighbors of radio transmitter30-1 is shorter that the predetermined geographical distance of 50 km.In other geographical vicinities, where the spatial distribution ofradio transmitters may be sparser, the generated set of neighbors of agiven radio transmitter may not reach the predetermined number (forexample, 20) over an area of radius equal to the predeterminedgeographical distance (for example, 50 km).

FIG. 4 shows a flow chart of an example process 400 for generating a setof neighbors of a given radio transmitter from among radio transmittersgrouped in a latitude bin. For example, process 400 can be applied togenerate the set of neighbors of radio transmitter 30-1 as described inthe example implementation illustrated in FIGS. 3B and 3C, or in FIGS.3D and 3E.

In some implementations, process 400 receives 405 a data-set includinggeo-spatial coordinates (latitude and longitude) of radio transmitterslocated in the same latitude-bin as the given radio transmitter. Forexample, in FIGS. 5B and 5C, the given radio transmitter may be labeled30-1, and the latitude-bin may be labeled 310. The radio transmitters inthe latitude-bin can be sorted by longitude-distance to the given radiotransmitter.

Process 400 can receive 410 an indication of what the maximum number ofneighbors in the set of neighbors, N, is desired to be. In reference toFIGS. 3B and 3C, N has been referred to as the predetermined number ofthe set of neighbors. The maximum number of neighbors can be chosen tobe N=20.

Process 400 can initialize 415 a maximum geographical-distance for theset of neighbors, dMax, to a default radius (range), R. The maximumgeographical-distance for the set of neighbors, dMax, can remain fixedto the default radius, R, for as long as the set of neighbors has notreached the maximum number of neighbors, N. Else, if the set ofneighbors has reached the maximum number of neighbors, N, then themaximum geographical-distance for the set of neighbors, dMax, can be adistance measured from the given radio transmitter to the farthest amongthe set of N-neighbors.

Process 400 can initialize 417 a count of radio transmitters in the setof neighbors to zero prior to generating the set of neighbors for thegiven radio transmitter. The count can be incremented by 1 from 0 to N.

Process 400 can select 420 a next radio transmitter in the sortedlatitude-bin. The node A associated with the selection 420 represents anindication of an iterative selection. Specifically, the operations ofprocess 400 can be applied to each radio transmitter in the latitude-binbased on the conditional steps described below. Thus, the next radiotransmitter can refer to a first (closest) radio transmitter near thegiven radio transmitter at the beginning of the iterative process 400.However, the next radio transmitter can refer to any other radiotransmitter included on the ordered strings 202 and 204 in FIGS. 3B and3C, or on the ordered strings 206 and 208 in FIGS. 3D and 3E, forexample.

Process 400 verifies 425 whether the selected radio transmitter istagged as having been previously processed. A tagged radio transmitteris skipped (not reprocessed), and a next radio transmitter can beselected 420 from the sorted latitude-bin. Tagged radio transmitters mayhave been encountered during the processing of latitude-bin 330, in theexample implementations illustrated in FIGS. 3D and 3E, regarding radiotowers located in both latitude-bin 310 and latitude-bin 330.

If, however, the selected radio transmitter is untagged, process 400 cantag 430 the selected radio transmitter as processed. Tagging radiotransmitters may have been applied during the processing of latitude-bin310, in the example implementations illustrated in FIGS. 3B and 3C,regarding radio towers located in latitude-bin 310.

Process 400 verifies 435 whether the selected radio transmitter isseparated from the given tower by a longitude-distance, Dlong, shorterthan the maximum geographical-distance for the set of neighbors, dMax.If the selected radio transmitter is separated from the given tower by alongitude-distance, Dlong, longer than the maximum geographical-distancefor the set of neighbors, dMax, then process 400 can be completed(stopped) by providing 440 the generated set of neighbors of the givenradio transmitter. For example, such a situation may occur ingeographical areas having a sparse distribution of radio towers beforereaching the maximum number of neighbors, N, in the set of neighbors.However, such condition can also happen, for example, in geographicalareas having a dense distribution of radio towers in which the maximumnumber of neighbors, N, in the set of neighbors can be achieved over aradius smaller than the default range, R.

If, however, the selected radio transmitter is separated from the giventower by a longitude-distance, Dlong, shorter than the maximumgeographical-distance for the set of neighbors, process 400 cancalculate 450 a geographical-distance, D, from the given radiotransmitter to the selected radio transmitter. Thegeographical-distance, D, can be calculated in accordance with EQs. 1-3.

Process 400 can verify 455 whether the selected radio transmitter isseparated from the given tower by a geographical-distance, D, shorterthan the maximum geographical-distance for the set of neighbors, dMax.If the selected radio transmitter is separated from the given tower by ageographical-distance, D, longer than the maximum geographical-distancefor the set of neighbors, dMax, the process 400 can loop back to select420 the next radio transmitter in the sorted latitude-bin.

If, however, the selected radio transmitter is separated from the giventower by a geographical-distance, D, shorter than the maximumgeographical-distance for the set of neighbors, dMax, process 400 canverify 460 whether the maximum number of neighbors, N, of the set ofneighbors has been reached.

If the maximum number of neighbors, N, of the set of neighbors has notbeen reached, i<N, then process 400 can increment 465 the neighborcounter by one, and can add 480 the selected radio transmitter to theset of neighbors. Finally, process 400 can loop back to select 420 thenext radio transmitter in the sorted latitude-bin.

If, however, the maximum number of neighbors, N, of the set of neighborshas been reached, i=N, then process 400 can eliminate 475 from the setof neighbors the radio transmitter separated from the given transmitterby the longest geographical distance, dMax, corresponding to the maximumgeographical-distance for the set of neighbors, dMax. Then, process 400can add 480 the selected radio transmitter to the set of neighbors. Andonce again, process 400 can loop back to select 420 the next radiotransmitter in the sorted latitude-bin.

Aspects of processes 200A, 200B and 400 can be combined to generate aset of neighbors associated with each cell tower that is known to beoperational on Earth. FIG. 5A shows an image 500A of a map including thelocation of twenty eight of such cell towers. Latitude on Earth ismeasured from −90° (South Pole) to 0 (Equator) to +90° (North Pole).Longitude on Earth is measured from 0° (Greenwich Meridian), goingEastward to +180°, and going Westward to −180°. The +180° Meridian isone and the same as the −180° Meridian, and is on the same diameter asthe Greenwich Meridian. To simplify computations, in this example,latitude coordinates have been shifted by 90°, such that thecorresponding Earth coordinates become 0° for the North Pole, 90° forthe Equator, and +180° for the South Pole. To further simplifycomputations, in this example, longitude coordinates have been shiftedby 180°, such that the corresponding Earth coordinates become 180° forthe Greenwich Meridian, 0° and/or +360° for the Meridian that is on thesame diameter as the Greenwich Meridian. For example, the geo-spatialcoordinates for Buenos Aires, Argentina, are lat=−34°, long=−61°. On themap image 500A, the geo-spatial coordinates corresponding to BuenosAires are lat=124°, long=241°.

FIG. 5B shows a table 500B-1 listing the unique ID (MCC.MNC.LAC.CELL)and the geo-spatial coordinates (Lat, Long) of the 28 cell towers. Atable 500B-2 lists a two-dimensional pointer array, each element of thepointer being initialized by -1. The two-dimensional pointer array isalso included 4 columns of table 500B-1. For example, the pointer arrayin columns “next1 up” and “prev1 up” may be used to sort the cell towersin FIG. 5A, similarly to using strings 202 and 204, respectively, tosort the radio transmitters in FIG. 2B. Also for example, the pointerarray in columns “next2 down” and “prev2 down” may be used to sort thecell towers in FIG. 5A, similarly to using strings 206 and 208,respectively, to sort the radio transmitters in FIG. 2D.

FIG. 5C shows a table 500C-1 including updated columns “next1 up”,“prev1 up”, “next2 down” and “prev2 down” to indicate the sorting of the28 cell towers by longitude, for each of latitude-bins 124° and 124.5°.A table 500C-2 lists a updated two-dimensional pointer array, reflecting25 cell towers included in latitude-bin 124.0°, and 24 cell towersincluded in latitude bin 124.5°. The latitude-bins 124° and 124.5° have25 cell towers in common.

FIG. 5D shows a table 500D-1 including updated columns “next1 up”,“prev1 up”, “next2 down” and “prev2 down” to indicate the sorting of the28 cell towers by longitude-distance, for each of latitude-bins 124° and124.5°. Prior to sorting by longitude-distance, the latitude-bins havebeen subject to closing loops. Closing loops involves tying together theends of the latitude-bin portions illustrated in the map image 500A. Asillustrated in Table D-2, the West-most longitude 241° (depicted in themap image 500A) becomes one and the same with longitude 0°. Thisoperation is equivalent to subtracting 241° from the longitude of eachof the other 27 cell towers.

FIG. 5E shows a table 500E including a set of neighbors associated witheach of the 28 cell towers. Table 500E extends to the right to include20 columns corresponding to maximum 20 neighbors in each set ofneighbors. However, for clarity, only the first 7 of 20 neighbors areshown in FIG. 5E.

For example, table 500E illustrates that there are 20 neighboring celltowers in the set of neighbors of cell tower 4. The closest neighbor ofcell tower 4 is cell tower 7 at a distance of 2.1 km. The second closestneighbor of cell tower 4 is cell tower 27 at a distance of 2.3 km. Andso on, to the 20^(th) closest neighbor (or the farthest neighbor), inthe set of neighbors of cell tower 4, which is located 21.7 km away(dMax=21.7 km). In another example listed in table 500E, there are 4neighbors in the set of neighbors of cell tower 3. The closest neighborof cell tower 3 is cell tower 13 at a distance of 0.3 km. The secondclosest neighbor of cell tower 3 is cell tower 18 at a distance of 2.4km. The third closest neighbor of cell tower 3 is cell tower 0 at adistance of 16.8 km. And the second closest (and last) neighbor of celltower 3 is cell tower 1 at a distance of 23.0 km. Each of the remaining23 towers is located at a geographical-distance longer than 50 km.

A multitude of computing devices may be used to implement the systemsand methods described in this document, as either a client or as aserver or plurality of servers. A computing device can be implemented invarious forms of digital computers, such as laptops, desktops,workstations, personal digital assistants, servers, blade servers,mainframes, and other appropriate computers. Another computing devicecan be implemented in various forms of mobile devices, such as personaldigital assistants, cellular telephones, smartphones, and other similarcomputing devices. Additionally, computing devices can include UniversalSerial Bus (USB) flash drives. The USB flash drives may store operatingsystems and other applications. The USB flash drives can includeinput/output components, such as a wireless transmitter or USB connectorthat may be inserted into a USB port of another computing device. Thecomponents described here, their connections and relationships, andtheir functions, are meant to be exemplary only, and are not meant tolimit implementations of the inventions described and/or claimed in thisdocument.

A computing device can include a processor, memory, a storage device, ahigh-speed interface connecting to memory and high-speed expansionports. The computing device can further include a low speed interfaceconnecting to a low speed bus and a storage device. Each of the abovecomponents can be interconnected using various busses, and may bemounted on a common motherboard or in other manners as appropriate. Theprocessor can process instructions for execution within the computingdevice, including instructions stored in the memory or on the storagedevice to display graphical information for a GUI on an externalinput/output device, such as a display coupled to high speed interface.In other implementations, multiple processors and/or multiple buses maybe used, as appropriate, along with multiple memories and types ofmemory. Also, multiple computing devices may be connected, with eachdevice providing portions of the necessary operations (e.g., as a serverbank, a group of blade servers, or a multi-processor system).

The memory can store information within the computing device. In oneimplementation, the memory can be a volatile memory unit or units. Inanother implementation, the memory can be a non-volatile memory unit orunits. The memory may also be another form of computer-readable medium,such as a magnetic or optical disk.

The storage device can provide mass storage for the computing device. Inone implementation, the storage device may be or contain acomputer-readable medium, such as a floppy disk device, a hard diskdevice, an optical disk device, or a tape device, a flash memory orother similar solid state memory device, or an array of devices,including devices in a storage area network or other configurations. Acomputer program product can be tangibly embodied in an informationcarrier. The computer program product may also contain instructionsthat, when executed, perform one or more methods, such as thosedescribed above. The information carrier is a computer- ormachine-readable medium, such as the memory, the storage device, ormemory on processor.

The high speed controller can manage bandwidth-intensive operations forthe computing device, while the low speed controller can manage lowerbandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller can becoupled to memory, to a display (e.g., through a graphics processor oraccelerator), and to high-speed expansion ports, which may acceptvarious expansion cards. In the implementation, low-speed controller canbe coupled to the storage device and the low-speed expansion port. Thelow-speed expansion port, which may include various communication ports(e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled toone or more input/output devices, such as a keyboard, a pointing device,a scanner, or a networking device such as a switch or router, e.g.,through a network adapter.

The computing device may be implemented in a number of different forms.For example, it may be implemented as a standard server, or multipletimes in a group of such servers. It may also be implemented as part ofa rack server system. In addition, it may be implemented in a personalcomputer such as a laptop computer. Alternatively, components fromcomputing device may be combined with other components in a mobiledevice. Each of such devices may contain one or more computing devicesor mobile devices, and an entire system may be made up of multiplecomputing devices and mobile devices communicating with each other.

A mobile device can include a processor, memory, an input/output devicesuch as a display, a communication interface, and a transceiver, amongother components. The mobile device may also be provided with a storagedevice, such as a microdrive or other device, to provide additionalstorage. Each of the above components is interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor can execute instructions within the mobile device,including instructions stored in the memory. The processor of the mobiledevice may be implemented as a chipset of chips that include separateand multiple analog and digital processors. Additionally, the processormay be implemented using any of a number of architectures. For example,the processor may be a CISC (Complex Instruction Set Computers)processor, a RISC (Reduced Instruction Set Computer) processor, or aMISC (Minimal Instruction Set Computer) processor. The processor mayprovide, for example, for coordination of the other components of themobile device, such as control of user interfaces, applications run bythe mobile device, and wireless communication by the mobile device.

The processor of the mobile device may communicate with a user throughcontrol interface and display interface coupled to a display. Thedisplay may be, for example, a Thin-Film-Transistor Liquid Crystaldisplay or an Organic Light Emitting Diode display, or other appropriatedisplay technology. The display interface may comprise appropriatecircuitry for driving the display to present graphical and otherinformation to a user. The control interface may receive commands from auser and convert them for submission to the processor of the mobiledevice. In addition, an external interface may provide in communicationwith processor of the mobile device, so as to enable near areacommunication of the mobile device with other devices. The externalinterface may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used. The memory stores informationwithin the computing mobile device. The memory can be implemented as oneor more of a computer-readable medium or media, a volatile memory unitor units, or a non-volatile memory unit or units. An expansion memorymay also be provided and connected to the mobile device through anexpansion interface, which may include, for example, a SIMM (Single InLine Memory Module) card interface. Such expansion memory may provideextra storage space for the mobile device, or may also storeapplications or other information for the mobile device. Specifically,expansion memory may include instructions to carry out or supplement theprocesses described above, and may include secure information also.Thus, for example, expansion memory may be provide as a security modulefor the mobile device, and may be programmed with instructions thatpermit secure use of device. In addition, secure applications may beprovided via the SIMM cards, along with additional information, such asplacing identifying information on the SIMM card in a non-hackablemanner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory, expansionmemory, or memory on processor that may be received, for example, overtransceiver or external interface.

The mobile device may communicate wirelessly through communicationinterface, which may include digital signal processing circuitry wherenecessary. Communication interface may provide for communications undervarious modes or protocols, such as GSM voice calls, SMS, EMS, or MMSmessaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Suchcommunication may occur, for example, through a radio-frequencytransceiver. In addition, short-range communication may occur, such asusing a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module may provideadditional navigation- and location-related wireless data to the mobiledevice, which may be used as appropriate by applications running on themobile device.

The mobile device may also communicate audibly using audio codec, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codec may likewise generate audible sound fora user, such as through a speaker, e.g., in a handset of the mobiledevice. The sound may include sound from voice telephone calls, mayinclude recorded sound (e.g., voice messages, music files, etc.) and mayalso include sound generated by applications operating on the mobiledevice.

The mobile computing device may be implemented in a number of differentforms. For example, it may be implemented as a cellular telephone. Itmay also be implemented as part of a smartphone, personal digitalassistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), peer-to-peernetworks (having ad-hoc or static members), grid computinginfrastructures, and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous.

For example, given a set of geographically distributed assets of knownlatitude and longitude, the processes and systems disclosed in thisspecification can be used for identifying a set of neighbors of aspecified asset. Examples of such geographically distributed assets arewater wells, oil rigs, etc. In some implementations, the geographicalcoordinates of such assets may be recorded as waypoints associated withthe assets. Waypoints are sets of coordinates that identify a point inphysical space. These coordinates usually include longitude andlatitude, and sometimes altitude.

What is claimed is: 1-19. (canceled)
 20. A computer-implemented methodfor searching waypoints, the method comprising: a) receiving a set ofwaypoints, each waypoint having associated latitude and longitudevalues; b) ordering the received set of waypoints along lines oflatitude, sorted by longitude values; c) closing the lines of latitudeby linking the highest and lowest longitude value waypoints per latitudeline; d) examining each one of the set of waypoints starting at areference waypoint on a line of latitude and moving away from thereference waypoint through longitude values; e) during the examination,ascending and descending along the lines of latitude and calculating ageographical-distance between the reference waypoint and an examinedneighboring waypoint; f) stopping examination and providing a set ofneighbors of the reference waypoint when a last examined waypoint iscloser than a next waypoint in latitude-distance, either ascending ordescending, wherein the set of neighbors comprises the examinedwaypoints; and g) repeating steps (d-f) for all of the set of waypointsalong the lines of latitude, for all the lines of latitude.
 21. Themethod of claim 20, wherein the associated latitude and longitude ofeach waypoint are geographical coordinates of a geographicallydistributed asset, such that the received set of waypoints correspondsto a set of geographically distributed assets.
 22. The method of claim21, wherein the set of geographically distributed assets comprises waterwells.
 23. The method of claim 21, wherein the set of geographicallydistributed assets comprises oil rigs.
 24. The method of claim 21,wherein the set of geographically distributed assets comprises radiotransmitters.
 25. The method of claim 24, wherein the radio transmitterscomprise cell tower transmitters.
 26. The method of claim 24, whereinthe radio transmitters comprise one or more of Wireless Fidelity (WiFi)or Worldwide Interoperability for Microwave Access (WiMAX) transmitters.27. The method of claim 24, wherein the radio transmitters comprise celltower transmitters and one or more of WiFi or WiMAX transmitters.
 28. Anon-transitory computer-readable medium encoding instructions that, whenexecuted by data processing apparatus, cause the data processingapparatus to perform operations comprising: a) receiving a set ofwaypoints, each waypoint having associated latitude and longitudevalues; b) ordering the received set of waypoints along lines oflatitude, sorted by longitude values; c) closing the lines of latitudeby linking the highest and lowest longitude value waypoints per latitudeline; d) examining each one of the set of waypoints starting at areference waypoint on a line of latitude and moving away from thereference waypoint through longitude values; e) during the examination,ascending and descending along the lines of latitude and calculating ageographical-distance between the reference waypoint and an examinedneighboring waypoint; f) stopping examination and providing a set ofneighbors of the reference waypoint when a last examined waypoint iscloser than a next waypoint in latitude-distance, either ascending ordescending, wherein the set of neighbors comprises the examinedwaypoints; and g) repeating steps (d-f) for all of the set of waypointsalong the lines of latitude, for all the lines of latitude.
 29. Thenon-transitory computer-readable medium of claim 28, wherein theassociated latitude and longitude of each waypoint are geographicalcoordinates of a geographically distributed asset, such that thereceived set of waypoints corresponds to a set of geographicallydistributed assets.
 30. The non-transitory computer-readable medium ofclaim 29, wherein the set of geographically distributed assets compriseswater wells.
 31. The non-transitory computer-readable medium of claim29, wherein the set of geographically distributed assets comprises oilrigs.
 32. The non-transitory computer-readable medium of claim 29,wherein the set of geographically distributed assets comprises radiotransmitters.
 33. The non-transitory computer-readable medium of claim32, wherein the radio transmitters comprise cell tower transmitters. 34.The non-transitory computer-readable medium of claim 32, wherein theradio transmitters comprise one or more of Wireless Fidelity (WiFi) orWorldwide Interoperability for Microwave Access (WiMAX) transmitters.35. The non-transitory computer-readable medium of claim 32, wherein theradio transmitters comprise cell tower transmitters and one or more ofWiFi or WiMAX transmitters.
 36. A system comprising: one or morehardware processors; and memory encoding instructions that, whenexecuted by the one or more hardware processors, cause the system toperform operations comprising: a) receiving a set of waypoints, eachwaypoint having associated latitude and longitude values; b) orderingthe received set of waypoints along lines of latitude, sorted bylongitude values; c) closing the lines of latitude by linking thehighest and lowest longitude value waypoints per latitude line; d)examining each one of the set of waypoints starting at a referencewaypoint on a line of latitude and moving away from the referencewaypoint through longitude values; e) during the examination, ascendingand descending along the lines of latitude and calculating ageographical-distance between the reference waypoint and an examinedneighboring waypoint; f) stopping examination and providing a set ofneighbors of the reference waypoint when a last examined waypoint iscloser than a next waypoint in latitude-distance, either ascending ordescending, wherein the set of neighbors comprises the examinedwaypoints; and g) repeating steps (d-f) for all of the set of waypointsalong the lines of latitude, for all the lines of latitude.
 37. Thesystem of claim 36, wherein the associated latitude and longitude ofeach waypoint are geographical coordinates of a geographicallydistributed water well, such that the received set of waypointscorresponds to a set of geographically distributed water wells.
 38. Thesystem of claim 36, wherein the associated latitude and longitude ofeach waypoint are geographical coordinates of a geographicallydistributed oil rig, such that the received set of waypoints correspondsto a set of geographically distributed oil rigs.
 39. The system of claim36, wherein the associated latitude and longitude of each waypoint aregeographical coordinates of a geographically distributed radiotransmitter, such that the received set of waypoints corresponds to aset of geographically distributed radio transmitters.